\section{Visualization}
\subsection{Health Document}
Our text corpus consists of yearly health reports issued by CDC from 2009 to 2012~\cite{Health:2009}~\cite{Health:2010}~\cite{Health:2011}~\cite{Health:2012}. 
There are about 2300 pages presenting analysis and tables by topics. The major topics are: \emph{Population}, \emph{Fertility and Natality}, \emph{Mortality}, \emph{Measure of Health}, \emph{Ambulatory Care}, \emph{Inpatient Care}, \emph{Personnel}, \emph{Facilities}, \emph{Expenditures} and \emph{Coverage and Programs}. In addition to lists of automatically extracted keywords, we ask two medical students to input their revision. The revision tasks are:
\begin{enumerate}
\item[(1)] \textbf{Selection}:
within each topic and subtopic, we let our colleagues choose 3-10 terms which they think are most related to the topic. 
\item[(2)] \textbf{Addition}:
we also ask them to add any term which they think is as relevant as those selected in (1), but is not in the list of extracted key terms. 
\end{enumerate}  
The resulting group of topics and lists of key terms are shown in Tab.~\ref{tab:health_topics}. 
%It is ordinary that a different list of topics may be summarized from another health document or with the consultation of domain experts. However, we may also
\subsection{Representation and Layout}
Each topic has a group of keywords. Also, each topic may have subtopics or belong to a broader theme in health reports. Motivated by these observations, we use a tree-node to depict each topic. The root node denotes the whole document and has a array of child nodes corresponding to a group of topics in the document. A leaf node represents a key word and has no child nodes. The root node is not visualized. Each non-root node is visualized as a circle with its weight encoded as the radius. 
To keep a group of circles together without overlapping, we compute the disk centers iteratively depending on the following geometric relations:
\begin{itemize}
\item \textbf{Repel}: For each pair of disks~(e.g. $D_1$ and $D_2$) within a group, if the distance between their centers is smaller than the sum of their radii, we compute a scaled vector $V$ from $D_1$'s center to $D_2$'s center and translate $D_2$ by $V$ and $D_1$ by $-V$. This would prevent overlapping among a group of disks.         
\item \textbf{Sink}: we translate each disk $D$ towards the center of $D$'s parent disk by a scaled amount. This would keep the group of disks together.    
\end{itemize}

We apply the ``sink'' and ``repel'' steps at each frame update until convergence. The scaling factor in ``repel'' is larger than that in ``sink'' as overlapping is less desirable than being off-centered. \\
 
\textbf{Physics-based vs. Physics-inspired}

An important difference of our approach from a force-directed layout is that we directly manipulate on the positions instead of velocities. In an typical physically-based approach, each frame update requires time-integration\footnote{E.g. explicit Euler method}: \textcircled{1}~computing forces based on geometric relations, \textcircled{2}~updating velocities w.r.t. forces, \textcircled{3}~updating positions w.r.t. velocities. We found that in general, directly modifying the positions converges faster and hence produces more visually stable layout with less oscillations. Hence, we make a distinction from alternative physically-based approaches and refer to ours as \emph{physics-inspired}.    
\begin{figure}
	\centering
		\includegraphics[width=\linewidth]{fig/changing.png}
	\label{fig:changing}
	\caption{(a) disks are initially of the same radius. (b) disks are changing their radius while remain repelled and gathered.}
\end{figure}

\subsection{Changing Radius Over Time}

As the topic/keyword weight may change over time, we allow the circles representing terms to inflate or shrink in an animation mode. Specifically, the animation requires $T$ $N$-tuple vectors as inputs, where $T$ is the number of time slices. These are weight vectors for all $N$ terms over time.    

An issue is that the number of time slices may not match the number of animation frames. Usually, even an short animation of 5 seconds~(with a framerate of 30 fps) requires far more frames than slices available. Therefore, we use closed, cubic interpolation to fill the gap and produce a smooth, periodic animation.             
    